Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Java OpenGL</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Java_OpenGL"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Java_OpenGL rootpage-Java_OpenGL skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Java OpenGL</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */


.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}


/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above summary">JOGL</th></tr><tr><td colspan="2" class="infobox-image logo"><span typeof="mw:File"></span><div class="infobox-caption">A <a href="Demoware" class="mw-redirect" title="Demoware">demo</a> screenshot illustrating real-time <a href="Refraction" title="Refraction">refraction</a> using <b>JOGL</b> on <a href="MacOS" title="MacOS">Mac OS X</a></div></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Programmer" title="Programmer">Developer(s)</a></th><td class="infobox-data"><a rel="nofollow" class="external text" href="http://jogamp.org/">JogAmp Community</a></td></tr><tr style="display: none;"><td colspan="2" class="infobox-full-data"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;">2.5.0
/ August&nbsp;18, 2023<span style="display:none">&nbsp;(<span class="bday dtstart published updated">2023-08-18</span>)</span></div></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_release_life_cycle#Beta" title="Software release life cycle">Preview release</a></th><td class="infobox-data"><div style="margin:0px;">n/a
/ tbd</div></td></tr><tr style="display:none"><td colspan="2">
</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Written in</th><td class="infobox-data"><a href="Java_(programming_language)" title="Java (programming language)">Java</a>, <a href="C_(programming_language)" title="C (programming language)">C</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Operating_system" title="Operating system">Operating system</a></th><td class="infobox-data"><a href="Cross-platform" class="mw-redirect" title="Cross-platform">Cross-platform</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_categories#Categorization_approaches" title="Software categories">Type</a></th><td class="infobox-data"><a href="3D_computer_graphics_software" class="mw-redirect" title="3D computer graphics software">3D computer graphics software</a> (library/API)</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_license" title="Software license">License</a></th><td class="infobox-data"><a href="BSD_license" class="mw-redirect" title="BSD license">BSD license</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://jogamp.org/jogl/www/">jogamp<wbr>.org<wbr>/jogl<wbr>/www<wbr>/</a></span> </td></tr></tbody></table>
<p><b>Java OpenGL</b> (<b>JOGL</b>) is a wrapper <a href="Library_(computer_science)" class="mw-redirect" title="Library (computer science)">library</a> that allows <a href="OpenGL" title="OpenGL">OpenGL</a> to be used in the <a href="Java_(programming_language)" title="Java (programming language)">Java programming language</a>.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> It was originally developed by Kenneth Bradley Russell and Christopher John Kline, and was further developed by the Game Technology Group at <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>. Since 2010, it has been an independent <a href="Open-source_software" title="Open-source software">open-source</a> project under a <a href="BSD_licenses" title="BSD licenses">BSD license</a>. It is the reference implementation for <a href="Java_Bindings_for_OpenGL" title="Java Bindings for OpenGL">Java Bindings for OpenGL</a> (JSR-231).
</p><p>JOGL allows access to most OpenGL features available to <a href="C_(programming_language)" title="C (programming language)">C</a> language programs through the use of the <a href="Java_Native_Interface" title="Java Native Interface">Java Native Interface</a> (JNI). It offers access to both the standard GL* functions along with the GLU* functions; however the <a href="OpenGL_Utility_Toolkit" title="OpenGL Utility Toolkit">OpenGL Utility Toolkit</a> (GLUT) library is not available for window-system related calls, as Java has its own windowing systems: <a href="Abstract_Window_Toolkit" title="Abstract Window Toolkit">Abstract Window Toolkit</a> (AWT), <a href="Swing_(Java)" title="Swing (Java)">Swing</a>, and some <a href="OpenGL#Development" title="OpenGL">extensions</a>.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Design">Design</h2></div>
<p>The base <a href="OpenGL" title="OpenGL">OpenGL</a> <a href="C_(programming_language)" title="C (programming language)">C</a> API, as well as its associated <a href="OpenGL_Utility_Library" title="OpenGL Utility Library">Windowing API</a>,<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> are accessed in JOGL via <a href="Java_Native_Interface" title="Java Native Interface">Java Native Interface</a> (JNI) calls. As such, the underlying system must support OpenGL for JOGL to work.
</p><p>JOGL differs from some other Java OpenGL wrapper libraries in that it merely exposes the procedural OpenGL API via methods on a few classes, rather than trying to map OpenGL functionality onto the <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a> paradigm. Indeed, most of the JOGL code is autogenerated from the OpenGL C header files via a conversion tool named <i><a href="GlueGen" title="GlueGen">GlueGen</a></i>, which was programmed specifically to facilitate the creation of JOGL.
</p>
<div class="mw-heading mw-heading2"><h2 id="Status_and_standardization">Status and standardization</h2></div>
<p>As of 2023, JOGL provides full access to the <a href="OpenGL" title="OpenGL">OpenGL</a> 4.5 specification as well as almost all vendor extensions (and <a href="OpenCL" title="OpenCL">OpenCL</a>, <a href="OpenMAX" title="OpenMAX">OpenMAX</a> and <a href="OpenAL" title="OpenAL">OpenAL</a>).<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> The <b>2.5.0</b> version is the reference implementation for <a href="Java_Bindings_for_OpenGL" title="Java Bindings for OpenGL">JSR-231 (Java Bindings for OpenGL)</a>.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> The <b>1.1.1</b> release gave limited access to <a href="OpenGL_Utility_Library" title="OpenGL Utility Library">GLU</a> <a href="Nonuniform_rational_B-spline" class="mw-redirect" title="Nonuniform rational B-spline">NURBS</a>, providing rendering of curved lines and surfaces via the traditional GLU APIs. The <b>2.3.2</b> release added support for OpenGL versions up to 4.5, and OpenGL ES versions up to 3.2.
</p><p>Wayland and Vulkan support is planned.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Java2D-OpenGL_interoperability">Java2D-OpenGL interoperability</h2></div>
<p>Since the <a href="Java_SE_6" class="mw-redirect" title="Java SE 6">Java SE 6</a> version of the <a href="Java_(programming_language)" title="Java (programming language)">Java</a> language, <a href="Java2D" class="mw-redirect" title="Java2D">Java2D</a> (the <a href="API" title="API">API</a> for drawing two dimensional graphics in Java) and JOGL have become interoperable, allowing it to&nbsp;:
</p>
<ul><li>Overlay <a href="Swing_(Java)" title="Swing (Java)">Swing</a> components (lightweight menus, tooltips, and other <a href="Widget_(computing)" class="mw-redirect" title="Widget (computing)">widgets</a>) on top of <a href="OpenGL" title="OpenGL">OpenGL</a> rendering.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup></li>
<li>Draw 3D <a href="OpenGL" title="OpenGL">OpenGL</a> graphics on top of <a href="Java2D" class="mw-redirect" title="Java2D">Java2D</a> rendering (see <a rel="nofollow" class="external text" href="https://web.archive.org/web/20080128174107/http://www.curious-creature.org/2005/12/21/a-swing-button-with-3d-source-codedemo/">here</a> for a button with an OpenGL icon).</li>
<li>Use 3D graphics anywhere where ordinarily a <a href="Swing_(Java)" title="Swing (Java)">Swing</a> <a href="Widget_(computing)" class="mw-redirect" title="Widget (computing)">widget</a> would be used. (Inside a JTable, JTree, ...)</li>
<li>Draw <a href="Java2D" class="mw-redirect" title="Java2D">Java2D</a> graphics on top of 3D <a href="OpenGL" title="OpenGL">OpenGL</a> rendering.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Tutorials">Tutorials</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://jogamp.org/git/?p=jogl-demos.git;a=blob;f=src/demos/es2/RawGL2ES2demo.java;hb=HEAD">OpenGL ES 2</a> sample</li>
<li><a rel="nofollow" class="external text" href="https://github.com/java-opengl-labs/helloTriangle">Hello Triangle</a>, gl3 and gl4 Hello Triangle and Texture. The samples are offered in Java and <a href="Kotlin_(programming_language)" title="Kotlin (programming language)">Kotlin</a></li>
<li><a rel="nofollow" class="external text" href="https://github.com/elect86/jogl-samples">Java OpenGL Sample Pack</a>, porting of <a rel="nofollow" class="external text" href="http://www.g-truc.net/project-0026.html">g-truc OpenGL Sample Pack</a>. The over 230 samples illustrate almost all OpenGL features ranging from ES 2.0 up to the last GL extensions, same of them usually also called <a href="AZDO" class="mw-redirect" title="AZDO">AZDO</a> (Almost Zero Driver Overhead).</li>
<li><a rel="nofollow" class="external text" href="https://github.com/elect86/modern-jogl-examples">modern jogl examples</a>, Porting of <i><a rel="nofollow" class="external text" href="https://bitbucket.org/alfonse/gltut/wiki/Home">Learning Modern 3D Graphics Programming, Jason L. McKesson</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160923093407/https://bitbucket.org/alfonse/gltut/wiki/Home">Archived</a> 2016-09-23 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a>.</i> Java and Kotlin side by side.</li>
<li><a rel="nofollow" class="external text" href="https://jogamp.org/wiki/index.php/Rudimentary_standalone_example_using_the_fixed_pipeline_by_Julien_Gouesse">Immediate mode</a> sample (simplest example, using the <a href="Fixed-function" class="mw-redirect" title="Fixed-function">Fixed-function</a> <a href="Graphics_pipeline" title="Graphics pipeline">graphics pipeline</a>)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Code_example">Code example</h2></div>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">display</span><span class="p">(</span><span class="n">GLAutoDrawable</span><span class="w"> </span><span class="n">drawable</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>

<span class="w"> </span><span class="n">GL4</span><span class="w"> </span><span class="n">gl4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">drawable</span><span class="p">.</span><span class="na">getGL</span><span class="p">().</span><span class="na">getGL4</span><span class="p">();</span>

<span class="w"> </span><span class="n">gl4</span><span class="p">.</span><span class="na">glClearBufferfv</span><span class="p">(</span><span class="n">GL2ES3</span><span class="p">.</span><span class="na">GL_COLOR</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">clearColor</span><span class="p">);</span>
<span class="w"> </span><span class="n">gl4</span><span class="p">.</span><span class="na">glClearBufferfv</span><span class="p">(</span><span class="n">GL2ES3</span><span class="p">.</span><span class="na">GL_DEPTH</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">clearDepth</span><span class="p">);</span>

<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">FloatUtil</span><span class="p">.</span><span class="na">makeLookAt</span><span class="p">(</span><span class="n">view</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">eye</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">at</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">up</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">tmp</span><span class="p">);</span>
<span class="w"> </span><span class="n">FloatUtil</span><span class="p">.</span><span class="na">makePerspective</span><span class="p">(</span><span class="n">projection</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">reset</span><span class="p">,</span><span class="w"> </span><span class="mi">45</span><span class="n">f</span><span class="p">,</span><span class="w"> </span><span class="n">aspect</span><span class="p">,</span><span class="w"> </span><span class="n">near</span><span class="p">,</span><span class="w"> </span><span class="n">far</span><span class="p">);</span>

<span class="w"> </span><span class="n">FloatUtil</span><span class="p">.</span><span class="na">multMatrix</span><span class="p">(</span><span class="n">projection</span><span class="p">,</span><span class="w"> </span><span class="n">view</span><span class="p">);</span><span class="w"> </span><span class="c1">// projection *= view</span>

<span class="w"> </span><span class="n">transformPointer</span><span class="p">.</span><span class="na">asFloatBuffer</span><span class="p">().</span><span class="na">put</span><span class="p">(</span><span class="n">projection</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>

<span class="w"> </span><span class="n">gl4</span><span class="p">.</span><span class="na">glUseProgram</span><span class="p">(</span><span class="n">programName</span><span class="p">);</span>
<span class="w"> </span><span class="n">gl4</span><span class="p">.</span><span class="na">glBindVertexArray</span><span class="p">(</span><span class="n">vertexArrayName</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="mi">0</span><span class="p">));</span>
<span class="w"> </span><span class="n">gl4</span><span class="p">.</span><span class="na">glBindBufferBase</span><span class="p">(</span><span class="n">GL2ES3</span><span class="p">.</span><span class="na">GL_UNIFORM_BUFFER</span><span class="w"> </span><span class="cm">/*target*/</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="cm">/*TRANSFORM0, index*/</span><span class="p">,</span><span class="w"> </span><span class="n">bufferName</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="cm">/*TRANSFORM, buffer*/</span><span class="p">);</span>

<span class="w"> </span><span class="n">gl4</span><span class="p">.</span><span class="na">glBindTextureUnit</span><span class="p">(</span><span class="mi">0</span><span class="w"> </span><span class="cm">/*diffuse*/</span><span class="p">,</span><span class="w"> </span><span class="n">textureName</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="mi">0</span><span class="p">));</span>
<span class="w"> </span><span class="n">gl4</span><span class="p">.</span><span class="na">glBindSampler</span><span class="p">(</span><span class="mi">0</span><span class="w"> </span><span class="cm">/*diffuse*/</span><span class="p">,</span><span class="w"> </span><span class="n">samplerName</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="mi">0</span><span class="p">));</span>

<span class="w"> </span><span class="n">gl4</span><span class="p">.</span><span class="na">glDrawElements</span><span class="p">(</span><span class="n">GL</span><span class="p">.</span><span class="na">GL_TRIANGLES</span><span class="p">,</span><span class="w"> </span><span class="n">elementCount</span><span class="p">,</span><span class="w"> </span><span class="n">GL</span><span class="p">.</span><span class="na">GL_UNSIGNED_SHORT</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1266661725">
/* start https://en.wikipedia.org/ */


.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}


/* end https://en.wikipedia.org/ */
</style>
<ul><li><a href="Java_Bindings_for_OpenGL" title="Java Bindings for OpenGL">Java Bindings for OpenGL</a>, The Java Community Specification Request for which JOGL provides an implementation</li>
<li><a href="Ardor3D" class="mw-redirect" title="Ardor3D">Ardor3D</a>, a high performance, professionally oriented scene graph using several bindings for OpenGL and OpenGL-ES including JOGL</li>
<li><a href="JMonkey_Engine" class="mw-redirect" title="JMonkey Engine">JMonkey Engine</a>, a high performance scene graph based graphics API using several bindings for OpenGL and OpenGL-ES including JOGL</li>
<li><a href="Poxnora" class="mw-redirect" title="Poxnora">Poxnora</a>, an online multiplayer game using JOGL</li>
<li><a href="RuneScape" title="RuneScape">RuneScape</a>, a MMORPG using JOGL</li>
<li><a href="Jake2" title="Jake2">Jake2</a>, a Java port of <a href="Quake_II" title="Quake II">Quake II</a> using several bindings for OpenGL including JOGL for its low-level graphic API</li>
<li><a href="Scilab" title="Scilab">Scilab</a>, a numerical computing program using JOGL for 2D, 3D rendering</li>
<li><a href="ClearVolume" title="ClearVolume">ClearVolume</a>, a JOGL powered real-time live 3D visualization library designed for high-end volumetric <a href="Light_sheet_fluorescence_microscopy" title="Light sheet fluorescence microscopy">light sheet microscopes</a>.</li>
<li><a href="Lightweight_Java_Game_Library" class="mw-redirect" title="Lightweight Java Game Library">LWJGL</a>, an alternative open-source OpenGL wrapper library</li>
<li><a href="Java_OpenAL" title="Java OpenAL">Java OpenAL</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist reflist-columns references-column-width" style="column-width: 30em;">
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFFriesen2008" class="citation web cs1">Friesen, Jeff (September 18, 2008). <a rel="nofollow" class="external text" href="https://www.infoworld.com/article/2077906/open-source-java-projects-java-binding-for-opengl-jogl.html">"Open source Java projects: Java Binding for OpenGL (JOGL)"</a>. Open Source Java Tutorials. <i><a href="JavaWorld" class="mw-redirect" title="JavaWorld">JavaWorld</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">2020-07-23</span></span>. <q><i>JOGL originated as a project named Jungle, which was created by 3D graphics experts Ken Russell (of Sun Microsystems) and Chris Kline (of Irrational Games).</i></q></cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFDavis2005" class="citation web cs1">Davis, Gene (February 21, 2005). <a rel="nofollow" class="external text" href="https://www.infoworld.com/article/2071845/hello-jogl.html">"Hello JOGL"</a>. <i><a href="JavaWorld" class="mw-redirect" title="JavaWorld">JavaWorld</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">2020-07-23</span></span>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://jogamp.org/doc/siggraph2010/jogamp-siggraph2010.pdf">"3D &amp; Multimedia Across Platforms and Devices Using JOGL"</a> <span class="cs1-format">(PDF)</span>. <a href="SIGGRAPH" title="SIGGRAPH">SIGGRAPH</a>. 2010-07-27<span class="reference-accessdate">. Retrieved <span class="nowrap">2011-02-06</span></span>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://jogamp.org/jogl/www/">"JOGL - Java Binding for the OpenGL API"</a>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://jcp.org/aboutJava/communityprocess/final/jsr231/index.html">"JSR-000231 Java Bindings for the OpenGL API"</a>. <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2011-02-06</span></span>. <q><i>In order to facilitate maximum community participation for the Java Binding for the OpenGL API, we use the JOGL project on java.net found at jogl.dev.java.net. The JOGL source code can be found there, licensed under a liberal source code license (mostly licensed as BSD except where we use other parties' licensed code). We take a snapshot of the code from this project every few months, run the Technology Compatibility Kit on the source code, and then officially make it the Reference Implementation for each formal Java Binding for the OpenGL API release.</i></q></cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://jogamp.org/bugzilla/show_bug.cgi?id=794">"Bug 794 - Add Wayland Windowing/Surface Interoperability"</a>. 2013-08-05.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://jogamp.org/jogl/doc/userguide/#overview">"JOGL Userguide"</a>.</cite></span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="https://jogamp.org/jogl/www/">Official website</a></span></span> </li>
<li><a rel="nofollow" class="external text" href="http://jogamp.org/deployment/jogamp-current/javadoc/jogl/javadoc/">JOGL 2.3.x Specification</a></li>
<li><a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=231">JSR-231 Java Bindings for OpenGL</a> website</li>
<li><a rel="nofollow" class="external text" href="http://ak.kiet.le.googlepages.com/theredbookinjava.html">tool kiet</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090209203335/http://ak.kiet.le.googlepages.com/theredbookinjava.html">Archived</a> 2009-02-09 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a>, The OpenGL Programming Guide examples using JOGL</li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20071126072642/http://nehe.gamedev.net/">NeHe's tutorials and sample code</a></li>
<li><a rel="nofollow" class="external text" href="http://jogamp.org/wiki/index.php/Setting_up_a_JogAmp_project_in_your_favorite_IDE">Setting up a JogAmp JOGL project in your favorite IDE</a></li>
<li><a rel="nofollow" class="external text" href="http://demo.dzzd.net/Viewer3D/">Viewer3D</a>, an applet to display interactive 3D content with JOGL</li>
<li><a rel="nofollow" class="external text" href="https://sourceforge.net/projects/eclipse-opengl/">Eclipse OpenGL Pack</a> OpenGL plugin for the <a href="Eclipse_(software)" title="Eclipse (software)">Eclipse</a> IDE</li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" ยท ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Java_desktop71" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div id="Java_desktop71" style="font-size:114%;margin:0 4em"><a href="Java_(software_platform)" title="Java (software platform)">Java</a> desktop</div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">APIs</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_Foundation_Classes" title="Java Foundation Classes">Java Foundation Classes</a></li>
<li><a href="Abstract_Window_Toolkit" title="Abstract Window Toolkit">Abstract Window Toolkit</a>
<ul><li><a href="Java_AWT_Native_Interface" title="Java AWT Native Interface">Java AWT Native Interface</a></li></ul></li>
<li><a href="Standard_Widget_Toolkit" title="Standard Widget Toolkit">Standard Widget Toolkit</a></li>
<li><a href="Java_2D" title="Java 2D">Java 2D</a></li>
<li><a href="Java_3D" title="Java 3D">Java 3D</a></li>
<li><a href="Swing_(Java)" title="Swing (Java)">Swing</a>
<ul><li><a href="SwingWorker" title="SwingWorker">SwingWorker</a></li>
<li><a href="Pluggable_look_and_feel" title="Pluggable look and feel">Pluggable look and feel</a></li>
<li><a href="Synth_Look_and_Feel" title="Synth Look and Feel">synth Look and Feel</a></li></ul></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Deprecated APIs</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_applet" title="Java applet">Java applet</a></li>
<li><a href="Lightweight_User_Interface_Toolkit" title="Lightweight User Interface Toolkit">Lightweight User Interface Toolkit</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Open-source</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="JavaFX" title="JavaFX">JavaFX</a></li>

<li><a href="Java_Bindings_for_OpenGL" title="Java Bindings for OpenGL">Java Bindings for OpenGL</a></li>
<li><a href="Lightweight_Java_Game_Library" class="mw-redirect" title="Lightweight Java Game Library">Lightweight Java Game Library</a>
<ul><li><a href="LibGDX" title="LibGDX">libGDX</a></li></ul></li>
<li><a href="Application_Foundation_Classes" title="Application Foundation Classes">Application Foundation Classes</a></li>
<li><a href="Qt_Jambi" class="mw-redirect" title="Qt Jambi">Qt Jambi</a></li>
<li><a href="QuickTime_for_Java" title="QuickTime for Java">QuickTime for Java</a></li>
<li><a href="SwingLabs" title="SwingLabs">swingLabs</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-08-07" href="https://en.wikipedia.org/wiki/?title=Java_OpenGL&amp;oldid=1304743419">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>